package example.set;


import entity.Person;
import org.junit.Test;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 * 元素无序 但不随机 不可重复
 * hashset是set的主要实现类 存储元素使用了哈希算法 根据哈希值决定元素存在哪里，不去逐一比较提升效率，
 * 如果发现两个元素哈希一样再进行相同比较，如真是同一元素，后进来的就存不进去了
 * 对象既需要重写equals 又要重写hashcode方法
 *
 * 线程不安全，允许存空值
 */

public class HashSetTest {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add(null);
        set.add("111111111");
        set.add("222222");
        set.add("33333");
        set.add("4444444444444444444");

        Iterator<String> iterator = set.iterator();
        while (iterator.hasNext()) {
            String next = iterator.next();
            System.out.println(next);
        }
    }


    @Test
    public void test() {
        Set<Person> set = new HashSet<>();
        set.add(new Person(10, "zx"));
        set.add(new Person(10, "zx"));
        set.add(new Person(10, "sss"));
        set.add(new Person(10, "sss"));

        for (Person person : set) {
            System.out.println(person);
        }
    }
}




